package com.demo.cryptology.digest;

import org.apache.commons.codec.binary.Hex;

import java.security.MessageDigest;

/**
 * 安全散列算法SHA (Secure Hash Algorithm)，用于确保信息传输完整一致。SHA基于MD5实现。
 * 是美国国家标准技术研究所发布的国家标准FIPS PUB 180，最新的标准已经于2008年更新到FIPS PUB 180-3。
 * 其中规定了SHA-1，SHA-224，SHA-256，SHA-384，和SHA-512这几种单向散列算法。SHA-1，SHA-224和SHA-256适用于长度不超过2^64二进制位的消息。
 * SHA-384和SHA-512适用于长度不超过2^128二进制位的消息
 */
public class SHA {



    public static void main(String[] args) throws Exception{
        String msg = "测试SHA";
        String hashMsg = msgSafeBase(msg, "SHA-256");
        System.out.println("msg:"+msg);
        System.out.println("code:"+hashMsg);
    }

    private static final String UTF_8="UTF-8";

    public static String msgSafeBase(String msg,String algorithem) throws Exception{
        MessageDigest m = MessageDigest.getInstance(algorithem);
        m.update(msg.getBytes(UTF_8));
        byte[] s = m.digest();
        return Hex.encodeHexString(s);
    }
}
